package cn.xeblog.plugin.game.chess2;

import cn.xeblog.commons.entity.game.chess.ChessDTO;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 中国象棋缓存<p>
 * 用于缓存游戏数据
 *
 * @author Hao.
 * @version 1.0
 * @since 2022/9/5 10:18
 */
public class ChessCache {

    /**
     * 当前模式
     */
    public Mode currentMode;

    /**
     * 当前玩家，红方.true 黑方.false
     */
    public boolean currentPlayer = false;

    /**
     * 当前对战模式
     */
    public Battle currentBattle;

    /**
     * 当前界面 用途：后期可设置我方和对方不同界面
     */
    public ChessDTO.UI currentUI;

    /**
     * 标记是否已落子
     */
    public boolean put;

    /**
     * 游戏模式
     */
    public enum Mode {
        /**
         * 在线对战
         */
        ONLINE,
        /**
         * 离线对战
         */
        OFFLINE
    }

    /**
     * 玩家选择颜色
     */
    @Getter
    @AllArgsConstructor
    public enum Player {
        /**
         * 红方
         */
        RED("红方先走", 255),
        /**
         * 黑方
         */
        BLACK("黑方殿后", 0);

        /**
         * 名称
         */
        private String name;

        /**
         * 值
         */
        private int value;
    }

    /**
     * 对战方式
     */
    @Getter
    @AllArgsConstructor
    public enum Battle {
        /**
         * 左右互搏
         */
        PVP("左右互搏", 1),
        /**
         * 人机对战
         */
        PVC("人机对战", 0);

        /**
         * 名称
         */
        private String name;

        /**
         * 值
         */
        private int value;
    }
}
